package UDPSocket;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/**
 * @author 王艺锡
 * @version 1.0
 */
public class UDPReceiveA {
    public static void main(String[] args) throws IOException {
        //1.创建一个DatagrameSocket对象，准备在9999端口接收数据
        DatagramSocket socket = new DatagramSocket(9999);
        //2.创建一个DatagramPacket对象，用于接收数据
        //UDP协议中 packet数据包 最大为64k
        byte buf[] = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buf,buf.length);

        //3.调用接收方法，将通过网络传输的 DatagramPacket 对象传输到packet中
        //此时如果没有数据传输过来，就会阻塞等待数据传输
        System.out.println("A端等待接收数据...");
        socket.receive(packet);

        //4.对packet进行拆包，得到其中的数据
        int length = packet.getLength();//获取数据长度
        byte[] data = packet.getData();//获取数据
        String s = new String(data,0,length);
        System.out.println(s);


        //发送
        data = "是啊，好久不见".getBytes();
        packet =
                new DatagramPacket(data, data.length, InetAddress.getByName("192.168.1.7"), 9998);
        socket.send(packet);

        //5.关闭对应的资源
        socket.close();
        System.out.println("A端退出");

    }
}
